#!/bin/bash

# $() 表示获取命令执行结果
result=$(echo "scale=5;10-2/6" | bc)
result+=$(date)
echo -n $result #-n表示删除当前显示行结尾的回车
#显示最近一次退出状态码
echo $?

#内联输入重定向
result=$(bc<<EOF
scale=3 
a=10
b=100
a/b+100
EOF
)
echo $result

# 执行数学运算(方括号前后必须有空格)
result=$[ 10+21 ]
echo 10+21=$result

# if检查命令执行结果，若执行成功则执行后面的语句
# test 命令判断变量中是否有内容
if test $1; then
	echo $1
fi

# if中的方括号定义测试条件
if [ 1 -lt 3 ]
then 
	echo "1>3"
fi

# if 中-n判断字符串非空
if [ -n 1 ]
then 
	echo "1 is not NULL"
fi

# if 中-z判断字符串为空
result=
if [ -z $result ]
then 
	echo result is NULL
fi

a=abca
b=cba
# if中=判断字符串相等(等号两侧必须有空格)
if [ $a = $b ]
then
	echo abc=cba
elif [ $a \< $b ] # 大于号小于号必须转义
then
	echo abc \> cba
else
	echo abc != cba 
fi

#检查文件是否存在
if [ -e emmm ]
then
	echo emmm exist
elif [ new -nt old ] # 判断文件新旧
then
	echo new is newer than old
fi

#复合测试
# -d检查目录 -s 检查文件是否为空
if [ -d dir ] && [ -s hello ]
then
	echo dir is dir and hello is not empty
fi

#if中使用双括号实现高级数学运算
# val++  后增
# val--  后减
# ++val  先增
# --val  先减
# !  逻辑求反
# ~  位求反
# **  幂运算
# <<  左位移
# >>  右位移
# &  位布尔和
# |  位布尔或
# &&  逻辑和
# ||  逻辑或
if (( 1 < 2 )) # 大于号小于号无需转义
then
	echo 1\<2
fi


#退出
exit 0
